Skip to content

从远端站点访问 SWF 文件

fang5566 edited this page Oct 7, 2013 · 6 revisions

这里要用到的查看器(inspector)已经作为在线体验的一部分发布了,位于 http://mozilla.github.io/shumway/examples/inspector/inspector.html 或它的镜像 http://www.areweflashyet.com/shumway/examples/inspector/inspector.html

在无法本地安装 Shumway 的情况下,您可以使用上述站点的查看器。使用方法有很多种,下面我们将根据它们存在的安全风险依次介绍,请各位仔细阅读相应的注释。

在本地保存 SWF

在无法本地安装 Shumway 的情况下,这是测试您 SWF 文件相对安全可取的方法。

  1. 下载 SWF 文件;
  2. 打开查看器;
  3. 点击 "Open File..." 按钮;
  4. 选择并打开已保存的 SWF 文件。

在远端网站设置 CORS HTTP Header

查看器允许使用 "rfile" 的查询参数来指定 SWF 文件 (参见 Debugging and Configuring Shumway)。 在请求所指定的文件时使用的是 XMLHttpRequest 并受到 CORS 的限制。有关详细信息请查看 http://enable-cors.org/index.html。您可以从 mozilla.github.io 或 www.areweflashyet.com 来访问远端站点(包含 SWF 文件的站点)。

例如:如果 .htaccess 文件放置在 www.areweflashyet.com:

Header set Access-Control-Allow-Origin "http://mozilla.github.io"
Header set Access-Control-Allow-Headers "If-Modified-Since"

您可以通过使用 mozilla.github.io 上的查看器来打开位于 www.areweflashyet.com 的文件,例如:http://mozilla.github.io/shumway/examples/inspector/inspector.html?rfile=http%3A//www.areweflashyet.com/shumway/examples/pac/pac3.swf (请注意将 ':' 替换为'%3A')

在 Firefox 中启用 system XHR

警告该方法会打开对位于 www.areweflashyet.com 的任意脚本的 HTTP 访问权限。 请在非生产系统下小心使用。

如果您信任 www.areweflashyet.com,您可以允许对该域名下脚本进行不受限的资源访问。打开浏览器控制台 (网页开发者->浏览器/错误控制台)并执行:

host = "http://www.areweflashyet.com";
perm = Components.classes["@mozilla.org/permissionmanager;1"]
                 .createInstance(Components.interfaces.nsIPermissionManager);
ios = Components.classes["@mozilla.org/network/io-service;1"]
                .getService(Components.interfaces.nsIIOService);
uri = ios.newURI(host, null, null);
perm.add(uri, "systemXHR", 1); /* Use 0 to revoke the permission */
"Successfully added systemXHR permissions for "+host;

现在您就可以访问 http://www.areweflashyet.com/shumway/examples/inspector/inspector.html?rfile=http%3A//mozilla.github.io/shumway/examples/pac/pac3.swf 了。

在 Chrome 中禁用 Web Security

警告该方法会开启对任意脚本不受限的 HTTP 资源访问。请在非生产系统下小心使用。

使用 --disable-web-security 开关参数运行 Chrome 执行程序,这样会关闭 CORS 的限制。您就可以在此指定任何 URL(任何网站/脚本也可以做到)。